<?php
namespace app\home\controller;
use phpmailer\phpmailer;
use think\Cookie;
use think\Db;
use think\Controller;
use think\Request;
use think\Session;
use think\captcha\Captcha; //验证码的类


class Personal extends controller
{
    public function index(){
        $a=Db::table("user")->where("id",Cookie::get("user_id"))->find();
        return view("personal/personal_center",["a"=>$a]);
    }

    public function recharge(){
        $a=Db::table("user")->where("id",Cookie::get("user_id"))->find();
        return view("personal/recharge",["a"=>$a]);
    }
//客户充值，数据存到充值申请表
    public function recharge_succeed(){
        $increase=$_POST;
        $id=Cookie::get("user_id");
        $a=Db::table("user")->where("id",$id)->find();
        $user= Db::table("user")->where(
            "password='".md5($_POST["password"])."' and id='$id' "
        )->find();
        if(!empty($user)){        // 密码匹配
            $date=array();
            $date["time"]= date("Y年-m月-d日 H:i:s");
            $date["user_name"]=$a["username"];
            $date["increase"]=$increase["increase"];
            $date["user_id"]=$user["id"]; // 充值表的user_id就是user表里面的id.
            $a=Db::table('increase')->insert($date);
            if($a){
                $this->success("充值申请已提交","Personal/recharge",0,2);
            }else{
                $this->error("充值申请提交失败","Index/index",0,2);
            }
        }else{
            $this->error("密码错误","personal/recharge",0,2);
        }
    }
//账号绑定页面
    public function account_binding(){
        $id=Cookie::get("user_id");
        $user_message=Db::table("user")->where("id",$id)->find();
        return view("personal/account_binding",["a"=>$user_message]);
    }

//    测试页面
    public  function test(){
        return view("personal/test");
    }

//   实名认证页面

    public  function real_name(){
        $id=Cookie::get("user_id");
        $a=Db::table("user")->where("id",$id)->find();
        return view("personal/real_name",["a"=>$a]);
    }


//    余额查询页面
    public function wealth_search(){
        //先验证输入的用户名和密码是否是正确。
        $id=Cookie::get("user_id");
        $a=Db::table("user")->where("id",$id)->find();
        $money=Db::table("user")->field("balance")->where("id=".Cookie::get("user_id"))->find();
        return view("personal/wealth_search",["balance"=>$money["balance"],"a"=>$a]);
    }

//    充值记录页面
    public function shopping_record(){
        $id=Cookie::get("user_id");
        $a=Db::table("user")->where("id",$id)->find();
        $recharge_record=Db::table("recharge_record")->where("user_id =".Cookie::get("user_id"))->paginate(5);
        $page=$recharge_record->render();
        return view("personal/shopping_record",["recharge_record"=>$recharge_record,"a"=>$a,"page"=>$page]);
    }



// 写入user数据，其实就是修改
    public  function personal_message(){
        $info=request()->file("files");
        if($info){
            $info = $info->move(ROOT_PATH . 'public' . DS . 'images');
           $head_image= $info->getSaveName();
        }
        if(isset($_POST["gender"])){
            $id=  $_GET["id"];
            $a=$_POST;
            $array=[
                "username"=>$a["user_name"],
                "profession"=>$a["profession"],
                "city"=>$a["province"].$a["city"].$a["county"],
                "gender"=>$a["gender"],
                "motto"=>$a["motto"]
            ];
            if(isset($head_image)){
                $array["head_img"]=$head_image;
            }

            if(Db::table("user")->where("id",$id)->update($array)){
                echo "<script>
                parent.parent.location.reload()
               </script> ";
//                $this->redirect(url('Personal/index'));
            }else{
                $this->error("出错了",url('Personal/index'));
            }
        }else{
            echo "please write the right message ";
        }
    }
//账号邮箱绑定
    public function binding_email(){
        $id=  Cookie::get("id");
        $a=$_POST;
        $code=$_POST["code"]; // 获取输入的验证
        $captcha=new Captcha(); // 创建验证类
        $judge=$captcha->check($code); // 验证，得到布尔值。
        if($judge=="true"){
            Db::table("user")->where("id",$id)->update([
                "email"=>$a["email"],
            ]);
            return $this->account_binding();
        }else{
            $this->error("验证码错误",'personal/account_binding');
        }
    }


//    电话绑定页面

    public function binding_mobile(){

        $id=  Cookie::get("id");
        $a=$_POST;
        $code=$_POST["code"]; // 获取输入的验证
        $captcha=new Captcha(); // 创建验证类
        $judge=$captcha->check($code); // 验证，得到布尔值。
        if($judge=="true"){
            Db::table("user")->where("id",$id)->update([
                "mobile"=>$a["mobile"],
            ]);
            return $this->account_binding();
        }else{
            $this->error("验证码错误","personal/account_binding");
        }


    }

//账号密码修改

    public function setting_password(){
        $id=  Cookie::get("user_id");
//        echo md5($_POST["old_password"]);
        $a=$_POST;
        $code=$_POST["code"]; // 获取输入的验证
        $captcha=new Captcha(); // 创建验证类
        $judge=$captcha->check($code); // 验证，得到布尔值。
        if($judge=="true"){
            $result= Db::table("user")->where([
                "id"=>$id,
                "password"=>md5($a["old_password"])
            ])->find();
            if($result==null){
                $this->error("原密码错误","personal/account_binding");
            }else{
                Db::table("user")->where("id",$id)->update([
                    "password"=>md5($a["new_password"]),
                ]);
                $this->success("修改密码成功","personal/account_binding");
            }
        }else{
            $this->error("验证码错误啦","personal/account_binding");
        }


    }


//    返回ajax 查询数据
    public function json(){
        $record=  Session::get("increase","think");
        echo $record;
    }


//    我的课程
	  public function mycourse(){  //显示个人中心我的课程页面，并进行遍历用户购买的课程名字
        $id=  Cookie::get("user_id");
        if($sql=Db::table('buying_courses')->where('user_id',$id)->paginate(5)){
            $a = [];
            $b = [];
            $c = [];
            for($i=0;$i<count($sql);$i++){
                $a[$i] = $sql[$i]['course_id'];
            }
            for($i=0;$i<count($a);$i++){
               $b[$i]=(Db::table('course')->where('id',$a[$i])->select());
            }
            for($i=0;$i<count($b);$i++){
                for($j=0;$j<count($b[$i]);$j++){
                    $c[$i] = $b[$i][$j]['record_name'];
                }
            }
            $this->assign('sql',$c);
            $this->assign('id',$a);
            $this->assign('page',$sql->render());
            return view('mycourse');
        }else{
            $this->error('查询数据错误');
        }


    }

//    邮箱验证码

    public function emailyz(){
	      pre($_POST);
	      if($this->email($_POST["email"],"你的验证码 ".$_POST["yam"])){//发送验证码
	          return true;
          }else{
              return false;
          }
    }

//    账号绑定页面
    public function binding(){
        if(Request::instance()->isAjax()){
            if(Db::table("user")->where("id",Cookie::get("user_id"))->update(["email"=>$_POST["email"]])){//修改email
                return true;
            }else{
                return false;
            }
        }
    }

//    发送邮件方法 163的smtp服务

    public function email($email,$content){
        $mail = new PHPMailer();
        $toemail =$email;//定义收件人的邮箱
        $mail->isSMTP();// 使用SMTP服务
        $mail->CharSet = "utf8";// 编码格式为utf8，不设置编码的话，中文会出现乱码
        $mail->Host = "smtp.163.com";// 发送方的SMTP服务器地址
        $mail->SMTPAuth = true;// 是否使用身份验证
        $mail->Username = "13689650044@163.com";//发送方的163邮箱用户名，就是你申请163的SMTP服务使用的163邮箱</span><span style="color:#333333;">
        $mail->Password = "19981020feng";// 发送方的邮箱密码，注意用163邮箱这里填写的是“客户端授权密码”而不是邮箱的登录密码！</span><span style="color:#333333;">
        $mail->SMTPSecure = "ssl";//<span><span style="color:#ff6666;">// 使用ssl协议方式</span><span style="color:#333333;">
        $mail->Port = 994;// 163邮箱的ssl协议方式端口号是465/994

        $mail->setFrom("13689650044@163.com", "Mailer");// 设置发件人信息，如邮件格式说明中的发件人，这里会显示为Mailer(xxxx@163.com），Mailer是当做名字显示
        $mail->addAddress($toemail, 'Wang');// 设置收件人信息，如邮件格式说明中的收件人，这里会显示为Liang(yyyy@163.com)
        $mail->addReplyTo("13689650044@163.com", "Reply");// 设置回复人信息，指的是收件人收到邮件后，如果要回复，回复邮件将发送到的邮箱地址
        //$mail->addCC("xxx@163.com");// 设置邮件抄送人，可以只写地址，上述的设置也可以只写地址(这个人也能收到邮件)
        //$mail->addBCC("xxx@163.com");// 设置秘密抄送人(这个人也能收到邮件)
        //$mail->addAttachment("bug0.jpg");// 添加附件
        $mail->Subject = "这是一个测试邮件";// 邮件标题
        $mail->Body = $content;// 邮件正文
        //$mail->AltBody = "This is the plain text纯文本";// 这个是设置纯文本方式显示的正文内容，如果不支持Html方式，就会用到这个，基本无用

        if (!$mail->send()) {// 发送邮件
//            echo "Message could not be sent.";
//            echo "Mailer Error: " . $mail->ErrorInfo;// 输出错误信息
            return false;
        } else {
            return true;
        }

    }

    public  function personal_center(){
        $a=Db::table("user")->where("id",Cookie::get("user_id"))->find();
        return view("personal/personal_index",["a"=>$a]);
    }
}
